      *  cobc -x mostrar.cbl -o mostrar.exe
      ******************************************************************
       IDENTIFICATION DIVISION.
      ******************************************************************
       PROGRAM-ID. mostrar.       

      ******************************************************************
       ENVIRONMENT DIVISION.
      ******************************************************************
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
        SELECT ArchivoReservas1 ASSIGN TO "RES1.DAT"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS FSReservas1.
        SELECT ArchivoReservas2 ASSIGN TO "RES2.DAT"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS FSReservas2.
        SELECT ArchivoReservas3 ASSIGN TO "RES3.DAT"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS FSReservas3.
        SELECT ArchivoEstadias ASSIGN TO "ESTADIAS.DAT"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS FSEstadias.
        SELECT ArchivoCategorias ASSIGN TO "CATEGORIAS.DAT"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS FSCategorias.
        SELECT ArchivoMaestro ASSIGN TO "MAESTRO.DAT"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS FSMaestro.

      ******************************************************************
       DATA DIVISION.
      ******************************************************************
      *****************************************************
       FILE SECTION.
      *****************************************************
       FD ArchivoReservas1.
       01 RegistroReservas1.

          03 RES1-COD-RES PIC 9(6).
           03 RES1-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 RES1-PERSONA.
              05 NOMBRE-CLI PIC X(30).
              05 TEL PIC X(15).
              05 DIR PIC X(30).
           03 RES1-IMP-RES PIC S9(6)V99.
      *********************************
        FD ArchivoReservas2.
        01 RegistroReservas2.
           03 RES2-COD-RES PIC 9(6).
           03 RES2-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 RES2-PERSONA.
              05 NOMBRE-CLI PIC X(30).
              05 TEL PIC X(15).
              05 DIR PIC X(30).
           03 RES2-IMP-RES PIC S9(6)V99.
      *********************************
        FD ArchivoReservas3.
        01 RegistroReservas3.
           03 RES3-COD-RES PIC 9(6).
           03 RES3-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 RES3-PERSONA.
              05 NOMBRE-CLI PIC X(30).
              05 TEL PIC X(15).
              05 DIR PIC X(30).
           03 RES3-IMP-RES PIC S9(6)V99.
      *********************************
        FD ArchivoEstadias.
        01 RegistroEstadias.
           03 EST-COD-RES PIC 9(6).
           03 EST-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 EST-IMPORTE PIC S9(6)V99.
      *********************************
        FD ArchivoCategorias.
        01 RegistroCategorias.
           03 CAT-CATEG-HB PIC 9(4).
           03 CAT-DESCRIP PIC X(15).

      *********************************
        FD ArchivoMaestro.
        01 RegistroMaestro.
           03 MAE-COD-RES PIC 9(6).
           03 MAE-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 MAE-PERSONA.
              05 NOMBRE-CLI PIC X(30).
              05 TEL PIC X(15).
              05 DIR PIC X(30).
           03 MAE-IMPORTE PIC S9(06)V99.
           03 MAE-ESTADO PIC X(1).
      *****************************************************
       WORKING-STORAGE SECTION.
      *****************************************************
       01 EofReservas1 PIC X.
          88 FIN VALUE 'S'.
          88 NO-FIN VALUE 'N'.
       01 FSReservas1 PIC 99.

       01 EofReservas2 PIC X.
          88 FIN VALUE 'S'.
          88 NO-FIN VALUE 'N'.
       01 FSReservas2 PIC 99.

       01 EofReservas3 PIC X.
          88 FIN VALUE 'S'.
          88 NO-FIN VALUE 'N'.
       01 FSReservas3 PIC 99.

       01 EofEstadias PIC X.
          88 FIN VALUE 'S'.
          88 NO-FIN VALUE 'N'.
       01 FSEstadias PIC 99.

       01 EofCategorias PIC X.
          88 FIN VALUE 'S'.
          88 NO-FIN VALUE 'N'.
       01 FSCategorias PIC 99.

        01 EofMaestro PIC X.
           88 FIN VALUE 'S'.
           88 NO-FIN VALUE 'N'.
        01 FSMaestro PIC 99.

       01 ReporteSalidaReservas.
          03 COD-RES PIC 9(6).
          03 FILLER PIC X(1) VALUE "|".
          03 FECHA-DES PIC X(10).
          03 FILLER PIC X(1) VALUE "|".
          03 FECHA-HAS PIC X(10).
          03 FILLER PIC X(1) VALUE "|".
          03 CATEG-HAB PIC 9(4).
          03 FILLER PIC X(1) VALUE "|".
          03 NOMBRE-CLI PIC X(30).
          03 FILLER PIC X(1) VALUE "|".
          03 TEL PIC X(15).
          03 FILLER PIC X(1) VALUE "|".
          03 DIR PIC X(30).
          03 FILLER PIC X(1) VALUE "|".
          03 IMP-RES PIC S9(6)V99.

       01 EncabezadoSalidaReservas.
          03 parte1  PIC X(62) VALUE
       "CODIGO|   DESDE  |  HASTA   |CAT |NOMBRE ".
          03 parte2 PIC X(28) VALUE "  |TELEFONO       |DIRECCION " .  
          03 parte3 PIC X(30) VALUE "                     | IMPORTE".
          
       01 ReporteSalidaEstadias.
          03 COD-RES PIC 9(6).
          03 FILLER PIC X(1) VALUE "|".
          03 FECHA-DES PIC X(10).
          03 FILLER PIC X(1) VALUE "|".
          03 FECHA-HAS PIC X(10).
          03 FILLER PIC X(1) VALUE "|".
          03 CATEG-HAB PIC 9(4).
          03 FILLER PIC X(1) VALUE "|".
          03 IMPORTE PIC S9(6)V99.

       77 EncabezadoSalidaEstadias PIC X(40) VALUE
       "CODIGO|   DESDE  | HASTA    |CAT |IMPORTE".

       01 ReporteSalidaCategorias.
          03 CATEG-HB PIC 9(4).
          03 FILLER PIC X(1) VALUE "|".
          03 DESCRIP PIC X(15).
       77 EncabezadoSalidaCategorias PIC X(20) VALUE
       " CAT DESCRIPCION ".

       01 ReporteSalidaMaestro.
          03 MAE-COD-RES PIC 9(6).
          03 FILLER PIC X(1) VALUE "|".
          03 FECHA-DES PIC X(10).
          03 FILLER PIC X(1) VALUE "|".
          03 FECHA-HAS PIC X(10).
          03 FILLER PIC X(1) VALUE "|".
          03 CATEG-HAB PIC 9(4).
          03 FILLER PIC X(1) VALUE "|".
          03 NOMBRE-CLI PIC X(30).
          03 FILLER PIC X(1) VALUE "|".
          03 TEL PIC X(15).
          03 FILLER PIC X(1) VALUE "|".
          03 DIR PIC X(30).
          03 FILLER PIC X(1) VALUE "|".
          03 MAE-IMPORTE PIC S9(06)V99.
          03 FILLER PIC X(1) VALUE "|".
          03 MAE-ESTADO PIC X(1).          
          
       01 EncabezadoSalidaMaestro.
          03 parte1  PIC X(62) VALUE
       "CODIGO|   DESDE  |  HASTA   |CAT |NOMBRE ".
          03 parte2 PIC X(28) VALUE "  |TELEFONO       |DIRECCION " .  
          03 parte3 PIC X(30) VALUE "                     |IMPORTE".
          03 parte4 PIC X(20) VALUE " | ESTADO".

      ******************************************************************
       PROCEDURE DIVISION.
      ******************************************************************
       Begin.
         PERFORM MostrarReservas1.
         PERFORM MostrarReservas2.
         PERFORM MostrarReservas3.
         PERFORM MostrarEstadias.
         PERFORM MostrarCategorias.
         PERFORM MostrarMaestro.
         STOP RUN.

      *********************************
       MostrarReservas1.
         DISPLAY ">>>>Reservas 1".
         DISPLAY EncabezadoSalidaReservas.
         OPEN INPUT ArchivoReservas1.
         READ ArchivoReservas1 AT END SET EofReservas1 TO 'S'.
         PERFORM ImprimirReserva1 UNTIL EofReservas1 = 'S'.
         CLOSE ArchivoReservas1.

      *********************************
       ImprimirReserva1.
         
         MOVE RES1-COD-RES TO COD-RES OF ReporteSalidaReservas.
         MOVE FECHA-DES OF RegistroReservas1 
           TO FECHA-DES OF ReporteSalidaReservas.
         MOVE FECHA-HAS OF RegistroReservas1
           TO FECHA-HAS OF ReporteSalidaReservas.
         MOVE CATEG-HAB OF RegistroReservas1
           TO CATEG-HAB OF ReporteSalidaReservas.
         MOVE NOMBRE-CLI OF RegistroReservas1
           TO NOMBRE-CLI OF ReporteSalidaReservas.
         MOVE TEL OF RegistroReservas1
           TO TEL OF ReporteSalidaReservas.
         MOVE DIR OF RegistroReservas1
           TO DIR OF ReporteSalidaReservas.
         MOVE RES1-IMP-RES TO IMP-RES OF ReporteSalidaReservas.
         DISPLAY ReporteSalidaReservas.
         READ ArchivoReservas1 AT END SET EofReservas1 TO 'S'.
      *********************************
       MostrarReservas2.
         DISPLAY ">>>>Reservas 2".
         DISPLAY EncabezadoSalidaReservas.
         OPEN INPUT ArchivoReservas2.
         READ ArchivoReservas2 AT END SET EofReservas2 TO 'S'.
         PERFORM ImprimirReserva2 UNTIL EofReservas2 = 'S'.
         CLOSE ArchivoReservas2.

      *********************************
       ImprimirReserva2.
         
         MOVE RES2-COD-RES TO COD-RES OF ReporteSalidaReservas.
         MOVE FECHA-DES OF RegistroReservas2 
           TO FECHA-DES OF ReporteSalidaReservas.
         MOVE FECHA-HAS OF RegistroReservas2
           TO FECHA-HAS OF ReporteSalidaReservas.
         MOVE CATEG-HAB OF RegistroReservas2
           TO CATEG-HAB OF ReporteSalidaReservas.
         MOVE NOMBRE-CLI OF RegistroReservas2
           TO NOMBRE-CLI OF ReporteSalidaReservas.
         MOVE TEL OF RegistroReservas2
           TO TEL OF ReporteSalidaReservas.
         MOVE DIR OF RegistroReservas2
           TO DIR OF ReporteSalidaReservas.
         MOVE RES2-IMP-RES TO IMP-RES OF ReporteSalidaReservas.
         DISPLAY ReporteSalidaReservas.
         READ ArchivoReservas2 AT END SET EofReservas2 TO 'S'.
      *********************************
       MostrarReservas3.
         DISPLAY ">>>>Reservas 3".
         DISPLAY EncabezadoSalidaReservas.
         OPEN INPUT ArchivoReservas3.
         READ ArchivoReservas3 AT END SET EofReservas3 TO 'S'.
         PERFORM ImprimirReserva3 UNTIL EofReservas3 = 'S'.
         CLOSE ArchivoReservas3.

      *********************************
       ImprimirReserva3.
         
         MOVE RES3-COD-RES TO COD-RES OF ReporteSalidaReservas.
         MOVE FECHA-DES OF RegistroReservas3 
           TO FECHA-DES OF ReporteSalidaReservas.
         MOVE FECHA-HAS OF RegistroReservas3
           TO FECHA-HAS OF ReporteSalidaReservas.
         MOVE CATEG-HAB OF RegistroReservas3
           TO CATEG-HAB OF ReporteSalidaReservas.
         MOVE NOMBRE-CLI OF RegistroReservas3
           TO NOMBRE-CLI OF ReporteSalidaReservas.
         MOVE TEL OF RegistroReservas3
           TO TEL OF ReporteSalidaReservas.
         MOVE DIR OF RegistroReservas3
           TO DIR OF ReporteSalidaReservas.
         MOVE RES3-IMP-RES TO IMP-RES OF ReporteSalidaReservas.
         DISPLAY ReporteSalidaReservas.
         READ ArchivoReservas3 AT END SET EofReservas3 TO 'S'.
      *********************************

       MostrarEstadias.
         DISPLAY ">>>>Estadias".
         DISPLAY EncabezadoSalidaEstadias.
         OPEN INPUT ArchivoEstadias.
         READ ArchivoEstadias AT END SET EofEstadias TO 'S'.
         PERFORM ImprimirEstadias UNTIL EofEstadias = 'S'.
         CLOSE ArchivoEstadias.
      *********************************
       ImprimirEstadias.
         MOVE EST-COD-RES TO COD-RES OF ReporteSalidaEstadias.
         MOVE FECHA-DES OF RegistroEstadias
           TO FECHA-DES OF ReporteSalidaEstadias.
         MOVE FECHA-HAS OF RegistroEstadias
           TO FECHA-HAS OF ReporteSalidaEstadias.
         MOVE CATEG-HAB OF RegistroEstadias
           TO CATEG-HAB OF ReporteSalidaEstadias.
         MOVE EST-IMPORTE
           TO IMPORTE OF ReporteSalidaEstadias.
         DISPLAY ReporteSalidaEstadias
         READ ArchivoEstadias AT END SET EofEstadias TO 'S'.

      *********************************
       MostrarCategorias.
         DISPLAY ">>>>Categorias".
         DISPLAY EncabezadoSalidaCategorias.
         OPEN INPUT ArchivoCategorias.
         READ ArchivoCategorias AT END SET EofCategorias TO 'S'.
         PERFORM ImprimirCategorias UNTIL EofCategorias = 'S'.

         CLOSE ArchivoCategorias.

      *********************************
       ImprimirCategorias.
         MOVE CAT-CATEG-HB TO CATEG-HB.
         MOVE CAT-DESCRIP TO DESCRIP.
         DISPLAY ReporteSalidaCategorias.
         READ ArchivoCategorias AT END SET EofCategorias TO 'S'.

      *********************************
       MostrarMaestro.
         DISPLAY ">>>>Maestro".
         DISPLAY EncabezadoSalidaMaestro.
         OPEN INPUT ArchivoMaestro.
         READ ArchivoMaestro AT END SET EofMaestro TO 'S'.
         PERFORM ImprimirMaestro UNTIL EofMaestro = 'S'.
         CLOSE ArchivoMaestro.

      *********************************
       ImprimirMaestro.
         
         MOVE MAE-COD-RES OF RegistroMaestro
           TO MAE-COD-RES OF ReporteSalidaMaestro.
         MOVE FECHA-DES OF RegistroMaestro 
           TO FECHA-DES OF ReporteSalidaMaestro.
         MOVE FECHA-HAS OF RegistroMaestro
           TO FECHA-HAS OF ReporteSalidaMaestro.
         MOVE CATEG-HAB OF RegistroMaestro
           TO CATEG-HAB OF ReporteSalidaMaestro.
         MOVE NOMBRE-CLI OF RegistroMaestro
           TO NOMBRE-CLI OF ReporteSalidaMaestro.
         MOVE TEL OF RegistroMaestro
           TO TEL OF ReporteSalidaMaestro.
         MOVE DIR OF RegistroMaestro
           TO DIR OF ReporteSalidaMaestro.
         MOVE MAE-IMPORTE OF RegistroMaestro 
           TO MAE-IMPORTE OF ReporteSalidaMaestro.
         MOVE MAE-ESTADO OF RegistroMaestro
           TO MAE-ESTADO OF ReporteSalidaMaestro.
         DISPLAY ReporteSalidaMaestro.
         READ ArchivoMaestro AT END SET EofMaestro TO 'S'.
